########################################################
#imagen_original -remap imagen_7colores imagen_resultado
#para lanzar una orden bash
#subprocess.call(['convert', 'imagen_original', '-remap', 'imagen_7_colores', 'imagen_resultado'], stdout = archivo_out, stdrr = archivo_error)
########################################################

image_location = '/home/natalia/Escritorio/tetris/'
total_path = '/home/natalia/Escritorio/tetris/amor11.bmp'


from Pieza import *
from Nodo import *
from Busqueda import *
from Cola import *
import subprocess
import time


imagen = []
image = image_location+'amor.bmp'


subprocess.call (['convert', image, '-resize', '5x4', '-map', image_location+'paleta_colores.bmp',  total_path])
subprocess.call(['convert', total_path, 'TXT:'+image_location+'pixels.txt'])

file = open(image_location+'pixels.txt')

l = file. readline()

l = l.split(':')
a = l[1].split(',')

ancho = (int)(a[0])
alto = (int)(a[1])

print 'Tenemos una imagen de'+str(ancho)+'x'+str(alto)

#(0,0),(1,0), (39,0),(0,1),...
#Inicializamos la imagen

for i in range(0,alto) :
    imagen.append([])



for i in range(0,ancho) :
    for j in range(0,alto) :
        l = file.readline()
        l = l.split('#')
        l = l[1].split()
        color = l[0]

        if color == "010101010101" :
            pix = Pixel(0)
            imagen[j].insert(i,pix)

        elif color == "FFFF01010101" :
            pix = Pixel(1)
            imagen[j].insert(i,pix)

        elif color == "FFFFF0F00101" :
            pix = Pixel(2)
            imagen[j].insert(i,pix)
        
        elif color == "01010101FFFF" :
            pix = Pixel(3)
            imagen[j].insert(i,pix)
            
        elif color == "0101F9F9FFFF" :
            pix = Pixel(4)
            imagen[j].insert(i,pix)
            
        elif color == "0101FFFF0101" :
            pix = Pixel(5)
            imagen[j].insert(i,pix)

        elif color == "FFFF0101BDBD" :
            pix = Pixel(6)
            imagen[j].insert(i,pix)

        else:
            print "ERROR: Color invalido encontrado."
    
file.close()

        



#Busqueda de una solucion

#--- Generamos un nodo con el estado inicial


estado_ini = Nodo(None, [], [None,None,None], 0,1)

print 'Seleccione el algoritmo de busqueda a utilizar :'
print '1. Busqueda en anchura. \n2. Busqueda en profundidad.\n3.Costo uniforme.\n4.Profundidad Iterativa.'
opcion = raw_input()
sol = []
t1 = 0 
t2 = 0

if opcion == '1' :
    t1 = time.clock()
    sol = busqueda_anchura(imagen, estado_ini)
    t2 = time.clock()
    
elif opcion == '2' :
    t1 = time.time()
    sol = busqueda_profundidad(imagen, estado_ini)
    t2 = time.time()

elif opcion == '3' :
    t1 = time.time()
    sol = costo_uniforme(imagen, estado_ini)
    t2 = time.time()
    
elif opcion == '4' :
    t1 = time.clock()
    sol = profundidad_iterativa(imagen, estado_ini)
    t2 = time.clock()

sol = busqueda_profundidad(imagen, estado_ini)
print "****************** Solucion *****************"
print "Numero de acciones : "+str(len(sol))
print "Tiempo de ejecucion :"+str(t2-t1)


for accion in sol :
    print "Poner ficha del tipo "+str(accion[2])+" en ["+str(accion[0])+","+str(accion[1])+"]"


print "*********** FIN DE LA BUSQUEDA ************"


